package top.carrotguo.divide;

/**
 * @Author: Carrot
 * @Mail: 1053155183carrot@gmail.com
 * @Date: Created in 10:54 2018-05-21
 */
public class BinarySearch {

    private int[] data;

    /**
     * 初始化有序序列
     * @param data
     */
    public BinarySearch(int[] data){
        this.data = data;
    }

    /**
     * 返回结果与向量中的search方法一样，返回不大于e的最后一位数的秩
     * @param e     查找元素
     * @param lo    从第lo位开始
     * @param hi    第hi位结束  不包括hi
     * @return
     */
    public int searchC(int e, int lo, int hi){
        while (lo<hi) {
            int min = (lo+hi)/2;
            if (e<data[min]) {
                hi = min;
            } else {
                lo = min+1;
            }
        }
        return --lo;
    }

    public static void main(String[] args){
        BinarySearch binarySearch = new BinarySearch(new int[]{1,2,3,4,5});
        int index = binarySearch.searchC(4,0,5);
        System.out.print("index="+index);
    }

}
